﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Sistema_Totem.Logica.Clases;
using System.Data;

namespace Sistema_Totem.Vista.Involucrados
{
    public partial class ListarConsultarInvolucrado : System.Web.UI.Page
    {
        #region Atributos
         
          private string valor;
          private List<Involucrado> listaInvolucrado = new List<Involucrado>();

        #endregion Atributos

        protected void Page_Load(object sender, EventArgs e)
        {

            //if (Session["tipo_usuario"].ToString() != "Analista")
            //{
            //    Response.Redirect("Login1.aspx");
            //}

            //if (Session["tipo_usuario"].ToString() != "Gerente")
            //{
            //    Response.Redirect("Login1.aspx");
            //}

            //if (Session["tipo_usuario"].ToString() != "Administrador")
            //{
            //    Response.Redirect("Login1.aspx");
            //}

            if (!IsPostBack)
            {
                // se le asigna al Gridview Involucrado el Databla que contiene toda la lista de Involucrados
                GridViewConsultarInvolucrado.DataSource = CargarInvolucradoTabla();
                GridViewConsultarInvolucrado.DataBind();
            }
            this.OcultarColumna();
        }

        public DataTable CargarInvolucradoTabla()
        {
            Involucrado involucrado = new Involucrado();
            List<Involucrado> listaInvolucrado = involucrado.ConsultartodosTodosInvolucrado();
            // Generar la DataTable de la lista de materias
            DataTable dataTable = new DataTable();
            //Crea las columnas de la tabla en el GridView
            dataTable.Columns.Add("Id", typeof(int));
            dataTable.Columns.Add("Involucrado", typeof(string));
            dataTable.Columns.Add("Rol", typeof(string));
           
            //Se recorre la lista de involucrado para asignarle al "DataTable"
            foreach (Involucrado involucrados in listaInvolucrado)
            {
                dataTable.Rows.Add(involucrados.Id,involucrados.Nombre,involucrados.Rol.Nombre);
            }
            
            Session["listaInvolucrados"] = listaInvolucrado;
            return dataTable;
        }

        protected void GridViewConsultarInvolucrado_SelectedIndexChanged(object sender, EventArgs e)
        {
            GridViewRow row = GridViewConsultarInvolucrado.SelectedRow;
            int idElegido = Convert.ToInt32(row.Cells[0].Text);
            listaInvolucrado = (List<Involucrado>)Session["listaInvolucrados"];
            // Recorremos la lista de los usuarios
            foreach (Involucrado involucrado in listaInvolucrado)
            {
                // verificamos que el ID del usuario elegido sea igual al ID del involucrado de la lista de involucrado
                if (involucrado.Id == idElegido)
                {
                    // Guardamos en una variable session el objeto del tipo involucrado                 
                    Session["involucrado"] = involucrado;

                }
            }
            // Redireccionamos a la pagina del consultarUsuario
            Response.Redirect("../Involucrados/ConsultarInvolucrado.aspx");
        }

        #region Cargar GridView (nombre/tipo)
        /// <summary>
        /// Método que me llena un GridView dependiendo
        /// de la busqueda si es por tipo o por nombre.
        /// </summary>
        /// <param name="rol"></param>
        /// <returns></returns>
        public DataTable CargarInvolucradoTabla2(List<Involucrado> listaInvolucrados, int caso, string valor)
        {
            // Generar la DataTable de la lista de materias
            DataTable table1 = new DataTable();
            //Crea las columnas de la tabla en el GridView
            table1.Columns.Add("Id", typeof(int));
            table1.Columns.Add("Involucrado", typeof(string));
            table1.Columns.Add("Rol", typeof(string));
            if (caso == 1)
            {
                foreach (Involucrado involucrado in listaInvolucrados)
                {
                    if (involucrado.Nombre == valor)
                    {
                        table1.Rows.Add(involucrado.Id, involucrado.Nombre, involucrado.Rol.Nombre);
                    }
                }
            }
            else
            {
                if (caso == 2)
                {
                    foreach (Involucrado involucrado in listaInvolucrados)
                    {
                        if (involucrado.Rol.Nombre == valor)
                        {
                            table1.Rows.Add(involucrado.Id, involucrado.Nombre, involucrado.Rol.Nombre);
                        }
                    }
                }
            }
            return table1;
        }
        #endregion Cargar GridView (nombre/tipo)
        // Oculta la columna del id
        public void OcultarColumna()
        {
            GridViewConsultarInvolucrado.HeaderRow.Cells[0].Visible = false;
            foreach (GridViewRow row in GridViewConsultarInvolucrado.Rows)
            {
                row.Cells[0].Visible = false;
            }
        }

        #region Primera Letra Mayuscula
        /// <summary>
        /// Método que me convierte la primera letra
        /// de una cadena en mayúscula.
        /// </summary>
        /// <param name="texto"></param>
        /// <returns></returns>
        public string PrimeraLetraMayúscula(string texto)
        {
            string valor = texto.Substring(0, 1).ToUpper() + texto.Substring(1);
            return valor;
        }
        #endregion Primera Letra Mayuscula
        protected void GridViewConsultarInvolucrado_PageIndexChanging(object sender, GridViewPageEventArgs e)
        {
            GridViewConsultarInvolucrado.PageIndex = e.NewPageIndex;
            // se le asigna al Gridview Involucrado el Databla que contiene toda la lista de Involucrados
            GridViewConsultarInvolucrado.DataSource = CargarInvolucradoTabla();
            GridViewConsultarInvolucrado.DataBind();
            this.OcultarColumna();
        }

        /// <summary>
        /// Accion del boton de buscar
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void Button2_Click(object sender, EventArgs e)
        {
            try
            {
                Mensaje.Visible = false;

                switch (Convert.ToInt32(tipoBusqueda.SelectedValue))
                {
                    case 1:
                        listaInvolucrado = new List<Involucrado>();
                        listaInvolucrado = (List<Involucrado>)Session["listaInvolucrados"];
                        valor = textBuscar.Text;

                        GridViewConsultarInvolucrado.DataSource = CargarInvolucradoTabla2(listaInvolucrado, 1, valor);
                        GridViewConsultarInvolucrado.DataBind();
                        break;

                    case 2:
                        listaInvolucrado = new List<Involucrado>();
                        listaInvolucrado = (List<Involucrado>)Session["listaInvolucrados"];
                        valor = textBuscar.Text;

                        GridViewConsultarInvolucrado.DataSource = CargarInvolucradoTabla2(listaInvolucrado, 2, valor);
                        GridViewConsultarInvolucrado.DataBind();

                        break;
                }
                this.OcultarColumna();
            }
            catch
            {

            }
        }
    }
}